Take extended layout into account in viewport
authorJan Arne Petersen <jpetersen@jpetersen.org>
Thu, 1 Apr 2010 09:53:41 +0000 (11:53 +0200)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Sun, 4 Apr 2010 00:59:27 +0000 (20:59 -0400)
Make sure the right height is used in GtkViewPort.

gtk/gtkviewport.c

index bfda9f28bf37c287649a5e8da70ff1cdfb5ae19b..3f3d34628718d821698749ba899f785c7a388657 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "config.h"
 #include "gtkviewport.h"
+#include "gtkextendedlayout.h"
 #include "gtkintl.h"
 #include "gtkmarshalers.h"
 #include "gtkprivate.h"
@@ -417,10 +418,23 @@ viewport_set_vadjustment_values (GtkViewport *viewport,
 
   if (bin->child && gtk_widget_get_visible (bin->child))
     {
-      GtkRequisition child_requisition;
-      
-      gtk_widget_get_child_requisition (bin->child, &child_requisition);
-      vadjustment->upper = MAX (child_requisition.height, view_allocation.height);
+      if (GTK_IS_EXTENDED_LAYOUT (bin->child))
+        {
+          gint natural_height;
+
+          gtk_extended_layout_get_height_for_width (GTK_EXTENDED_LAYOUT (bin->child),
+                                                    view_allocation.width,
+                                                    NULL,
+                                                    &natural_height);
+          vadjustment->upper = MAX (natural_height, view_allocation.height);
+        }
+      else
+        {
+          GtkRequisition child_requisition;
+
+          gtk_widget_get_child_requisition (bin->child, &child_requisition);
+          vadjustment->upper = MAX (child_requisition.height, view_allocation.height);
+        }
     }
   else
     vadjustment->upper = view_allocation.height;